NX 的 Next 模板在建立時已經預設有 Jest 跟 React Testing Library ,可以直接寫測試。
import { render } from '@testing-library/react';
import Page from './page';
describe('Page', () => {
it('should render successfully', () => {
const { baseElement } = render(<Page />);
expect(baseElement).toBeTruthy();
});
});
另外也已經有測試的指令。
{
//...
"targets": {
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/ironman-nextjs/jest.config.ts",
"passWithNoTests": true
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
},
},
}
可以快速的用指令進行測試。
pnpm nx test ironman-nextjs
另外如果在建成 app 的時候有選的話,就會產生 Cypress 模板,可以做 e2e 測試。
pnpm nx e2e ironman-nextjs-e2e
想要對所有專案跑測試的話,只要定義的測試指令名稱相同 target=test
,就可以同時且並行的執行。
pnpm exec nx run-many --target=test
// o
pnpm exec nx run-many -t=test
也可以只針對有變更的部分進行測試,使用 git 的話現在預設是測試相對於 main
分支的 PR 進行測試。
pnpm exec nx affected --target=test
Hi 大大好:
剛好看到你這篇文章,因為最近我司碰到一個問題,在做 monorepo test coverage 的功能,遇到 jest 沒辦法轉換 TypeScript 路徑的問題,主因是我們有一個資料夾內的檔案,在 CI runner 無法抓到,另外有試過一些做法:
不曉得大大有無碰到類似的狀況 ~
抓不到的資料夾是放在什麼位子,lib 嗎?是在跑 app 的測試嗎?